home *** CD-ROM | disk | FTP | other *** search
/ Ron Blank & Associates 7 / Ron Blank & Associates 7.iso / garaventa_ce / gar14a_ce_files / script.js < prev    next >
Text File  |  2003-04-18  |  29KB  |  877 lines

  1. function LoadSld()
  2. {
  3.     var sld=GetObj("SlideObj")
  4.     if( !g_supportsPPTHTML ) {
  5.         sld.style.visibility="visible"
  6.         return
  7.     }
  8.     if( MakeNotesVis() ) return
  9.     runAnimations = _InitAnimations();
  10.     if( IsWin("PPTSld") )
  11.         parent.SldUpdated(GetSldId())
  12.     g_origSz=parseInt(SlideObj.style.fontSize)
  13.     g_origH=sld.style.posHeight
  14.     g_origW=sld.style.posWidth
  15.     g_scaleHyperlinks=(document.all.tags("AREA").length>0)
  16.     if( g_scaleHyperlinks )
  17.         InitHLinkArray()
  18.     if( g_scaleInFrame||(IsWin("PPTSld") && parent.IsFullScrMode() ) )
  19.         document.body.scroll="no"
  20.     _RSW()
  21.     if( IsWin("PPTSld") && parent.IsFullScrMode() )
  22.         FullScrInit();
  23.     
  24.     MakeSldVis();
  25.     ChkAutoAdv()
  26.  
  27.     if( runAnimations )
  28.     {
  29.         if( document.all("NSPlay") )
  30.             document.all("NSPlay").autoStart = false;
  31.         if( sld.filters && sld.filters.revealtrans )
  32.             setTimeout( "document.body.start()", sld.filters.revealtrans.duration * 1000 );
  33.         else
  34.             document.body.start();
  35.     }
  36. }
  37. function MakeSldVis()
  38. {
  39.     var fTrans=g_showAnimation && SldHasTrans()
  40.     if( fTrans )
  41.     {
  42.         if( g_bgSound ) {
  43.             idx=g_bgSound.indexOf(",");
  44.             pptSound.src=g_bgSound.substr( 0, idx );
  45.             pptSound.loop= -(parseInt(g_bgSound.substr(idx+1)));
  46.         }
  47.         SlideObj.filters.revealtrans.Apply()
  48.     }
  49.     SlideObj.style.visibility="visible"
  50.     if( fTrans )
  51.         SlideObj.filters.revealtrans.Play()
  52. }
  53. function MakeNotesVis()
  54. {
  55.     if( !IsNts() ) return false
  56.     SlideObj.style.display="none"
  57.     nObj = document.all.item("NotesObj")
  58.     parent.SetHasNts(0)
  59.     if( nObj ) {
  60.         nObj.style.display=""
  61.         parent.SetHasNts(1)
  62.     }
  63.     return 1
  64. }
  65. function ChkAutoAdv()
  66. {
  67.     if(SldHasTrans())
  68.         SlideObj.onfilterchange=AutoAdv
  69.     else
  70.         AutoAdv()
  71. }
  72. function AutoAdv()
  73. {
  74.     if(!IsWin("PPTSld") || !gUseSldTimings )return
  75.     var sld=GetCurSld()
  76.     if( (sld.mAdvDelay>0) && !parent.IsFramesMode() )
  77.         setTimeout("parent.GoToNextSld()",sld.mAdvDelay)
  78. }
  79. function GetObj(id)
  80. {
  81.     if(g_supportsPPTHTML) return document.all(id);
  82.     else return document.getElementById(id);
  83. }
  84. function SldHasTrans() { return SlideObj.style.getAttribute("filter")!="" }
  85. function GetSldId() { return sId=location.href.substring(location.href.lastIndexOf('/')+1) }
  86. function HideMenu() { if( frames["PPTSld"] && PPTSld.document.all.item("ctxtmenu") && PPTSld.ctxtmenu.style.display!="none" ) { PPTSld.ctxtmenu.style.display='none'; return true } return false }
  87. function IsWin( name ) { return window.name == name }
  88. function IsNts() { return IsWin("PPTNts") }
  89. function IsSldOrNts() { return( IsWin("PPTSld")||IsWin("PPTNts") ) }
  90. function SupportsPPTAnimation() { return( navigator.platform == "Win32" && navigator.appVersion.indexOf("Windows")>0 ) }
  91. function SupportsPPTHTML()
  92. {
  93.     var appVer=navigator.appVersion, msie=appVer.indexOf("MSIE "), ver=0
  94.     if( msie >= 0 )
  95.         ver=parseFloat( appVer.substring( msie+5, appVer.indexOf(";",msie) ) )
  96.     else
  97.         ver=parseInt(appVer)
  98.     return( ver >= 4 && msie >= 0 )
  99. }
  100. function _RSW()
  101. {
  102.     if( !g_supportsPPTHTML || IsNts() ||
  103.       ( !g_scaleInFrame && (!IsWin("PPTSld") || !parent.IsFullScrMode()) ) )
  104.         return
  105.         var padding=0;
  106.         if( IsWin("PPTSld") && parent.IsFramesMode() ) padding=6
  107.     cltWidth=document.body.clientWidth-padding
  108.     cltHeight=document.body.clientHeight-padding
  109.     factor=(1.0*cltWidth)/g_origW
  110.     if( cltHeight < g_origH*factor )
  111.         factor=(1.0*cltHeight)/g_origH
  112.     newSize = g_origSz * factor
  113.     if( newSize < 1 ) newSize=1
  114.     s=SlideObj.style
  115.     s.fontSize=newSize+"px"
  116.     s.posWidth=g_origW*factor
  117.     s.posHeight=g_origH*factor
  118.     s.posLeft=(cltWidth-s.posWidth+padding)/2
  119.     s.posTop=(cltHeight-s.posHeight+padding)/2
  120.     if( g_scaleHyperlinks )
  121.         ScaleHyperlinks( factor )
  122. }
  123. function _InitAnimations()
  124. {
  125.     animRuntimeInstalled = ''+document.body.localTime != 'undefined';
  126.     isFullScreen = (window.name == "PPTSld") && !parent.IsFramesMode();
  127.     g_animUseRuntime = g_showAnimation && animRuntimeInstalled && !(isFullScreen && parent.IsSldVisited());
  128.     if( g_animUseRuntime ) {
  129.         collSeq = document.all.tags("seq");
  130.         if( collSeq != null ) {
  131.             for(ii=0;ii<collSeq.length;ii++) {
  132.                 if( collSeq[ii].getAttribute( "p:nodeType" ) == "mainSeq" ) {
  133.                     g_animMainSequence = collSeq[ii];
  134.                     break;
  135.                 }
  136.             }
  137.         }
  138.         if( g_animItemsToHide ) {
  139.             for(jj = 0; jj < g_animItemsToHide.length; jj++) {
  140.                 if( hideObj = GetObj(g_animItemsToHide[jj]) )
  141.                     hideObj.runtimeStyle.visibility="hidden";
  142.             }
  143.         }
  144.         if( g_animInteractiveItems ){
  145.             for(jj = 0; jj < g_animInteractiveItems.length; jj++) {
  146.                 if( triggerObj = GetObj(g_animInteractiveItems[jj]) )
  147.                     triggerObj.runtimeStyle.cursor="hand";
  148.             }
  149.         }
  150.         if( gUseSldTimings && ''+g_animSlideTime != 'undefined' ) {
  151.             adjustedTime = document.body.calculateAutoAdvanceTimes( g_animSlideTime, g_animEffectTimings );
  152.             if( IsWin("PPTSld") && adjustedTime != g_animSlideTime ) {
  153.                var sld = GetCurSld();
  154.                sld.mAdvDelay = adjustedTime * 1000;
  155.             }
  156.         }
  157.     }
  158.     return g_animUseRuntime;
  159. }
  160. gSldJump = 0, gSldJumpTrack = 0, gSldJumpIdx = "";
  161. function _KPH()
  162. {
  163.     if( IsNts() ) return;
  164.     if( !parent.IsFramesMode() && event.keyCode == 27 && !HideMenu() )
  165.         parent.window.close( self );
  166.     else if( event.keyCode == 32 ) {
  167.         if( window.name == "PPTSld" )
  168.             parent.PPTSld.DocumentOnClick();
  169.         else
  170.             parent.GoToNextSld();
  171.     }
  172.     CatchNumKeys( parent, event );
  173. }
  174. function CatchNumKeys( win, event ) {
  175.     if( win.IsFullScrMode() && (48<=event.keyCode) && (event.keyCode<=57) ) {
  176.         gSldJump = 1;
  177.         gSldJumpIdx += (event.keyCode-48).toString();
  178.     }
  179.     if( win.IsFullScrMode() && gSldJump && event.keyCode == 13 ) {
  180.         var numSlds = parent.GetSldList().mList.length
  181.         if ( gSldJumpIdx > numSlds )
  182.             gSldJumpIdx = numSlds;
  183.         if ( gSldJumpIdx >= 0 ) {
  184.             if ( gSldJumpIdx == 0 )
  185.                 gSldJumpIdx = 1;
  186.             var jumpTo = parseInt(gSldJumpIdx);
  187.             gSldJump = 0; gSldJumpIdx = "";
  188.             win.GoToSld( parent.GetSldList().mList[jumpTo-1].mSldHref )
  189.         }
  190.     }
  191. }
  192. function _KDH()
  193. {
  194.     if( event.keyCode == 8 ) {
  195.         event.returnValue = 0;
  196.         parent.GoToPrevSld();
  197.     }
  198. }
  199. var g_HLinkArray = new Array();
  200. function IMapAreaObj( areaObj, coords )
  201. {
  202.   this.areaObj = areaObj;
  203.   this.coords = coords;
  204. }
  205. function InitHLinkArray()
  206. {
  207.   var appVer = navigator.appVersion;
  208.   var msie = appVer.indexOf ( "MSIE " )
  209.   var ver = 0;
  210.   if ( msie >= 0 )
  211.     ver = parseInt ( appVer.substring( msie+5 ) );
  212.   linkNum = 0;
  213.   for (i=0; i<document.all.tags("AREA").length; i++) {
  214.     areaObj = document.all.tags("AREA").item(i);
  215.     if( ( areaObj.id != "pptxscale" ) || ( ver > 4 ) )
  216.       g_HLinkArray[linkNum++] = new IMapAreaObj( areaObj, ParseCoords( areaObj.coords ) );
  217.   }
  218. }
  219. function ScaleHyperlinks( factor )
  220. {
  221.   for ( ii=0; ii< g_HLinkArray.length; ii++) {
  222.     coordsStr="";
  223.     imaObj = g_HLinkArray[ii];
  224.     for ( jj=0; jj < imaObj.coords.length-1; jj++ )
  225.         coordsStr += (imaObj.coords[jj]*factor) + ",";
  226.     coordsStr += (imaObj.coords[jj]*factor);
  227.     imaObj.areaObj.coords = coordsStr;
  228.   }
  229. }
  230. function ParseCoords( coordsStr )
  231. {
  232.   var numArray = new Array();
  233.   var i = curPos = commaPos = 0;
  234.   while ( ( commaPos = coordsStr.indexOf(",", curPos) ) != -1 ) {
  235.     numArray[i++] = parseInt( coordsStr.substr( curPos, commaPos ) );
  236.     curPos = commaPos + 1;
  237.   }
  238.   numArray[i] = parseInt( coordsStr.substr( curPos ) );
  239.   return numArray;
  240. }
  241. function DocumentOnClick()
  242. {
  243.     if( IsNts() || parent.HideMenu() ) return;
  244.     if( ( g_allowAdvOnClick && !parent.IsFramesMode() ) ||
  245.         (event && (event.keyCode==32) ) )
  246.         parent.GoToNextSld();
  247. }
  248.  
  249. var g_supportsPPTHTML = SupportsPPTHTML(), g_scaleInFrame = 1, gId="", g_bgSound="",
  250.     g_scaleHyperlinks = false, g_allowAdvOnClick = 0, g_showInBrowser = 1, gLoopCont = 0, gUseSldTimings = 1;
  251. var g_showAnimation = g_supportsPPTHTML && SupportsPPTAnimation() && g_showInBrowser;
  252. var g_animManager = null;
  253. var g_animUseRuntime = false;
  254. var g_animItemsToHide, g_animInteractiveItems, g_animSlideTime;
  255. var g_animMainSequence = null;
  256. var ENDSHOW_MESG="End of slide show, click to exit.", SCREEN_MODE="Frames", gIsEndShow=0, NUM_VIS_SLDS=99, SCRIPT_HREF="script.js", FULLSCR_HREF="fullscreen.htm";
  257. var gCurSld = gPrevSld = 1, g_offset = 0, gNtsOpen = gHasNts = gOtlTxtExp = 0, gHasNarration = 0, gOtlOpen = true
  258. window.gPPTHTML=SupportsPPTHTML()
  259. var gMainDoc=new Array(new hrefList("slide0001.htm",1,-1,1),new hrefList("slide0183.htm",1,-1,1),new hrefList("slide0182.htm",1,-1,1),new hrefList("slide0223.htm",1,-1,1),new hrefList("slide0180.htm",1,-1,1),new hrefList("slide0296.htm",1,-1,1),new hrefList("slide0184.htm",1,-1,1),new hrefList("slide0297.htm",1,-1,1),new hrefList("slide0185.htm",1,-1,1),new hrefList("slide0298.htm",1,-1,1),new hrefList("slide0186.htm",1,-1,1),new hrefList("slide0299.htm",1,-1,1),new hrefList("slide0187.htm",1,-1,1),new hrefList("slide0300.htm",1,-1,1),new hrefList("slide0188.htm",1,-1,1),new hrefList("slide0301.htm",1,-1,1),new hrefList("slide0268.htm",1,-1,1),new hrefList("slide0302.htm",1,-1,1),new hrefList("slide0269.htm",1,-1,1),new hrefList("slide0303.htm",1,-1,1),new hrefList("slide0270.htm",1,-1,1),new hrefList("slide0304.htm",1,-1,1),new hrefList("slide0271.htm",1,-1,1),new hrefList("slide0305.htm",1,-1,1),new hrefList("slide0196.htm",1,-1,1),new hrefList("slide0217.htm",1,-1,1),new hrefList("slide0224.htm",1,-1,1),new hrefList("slide0160.htm",1,-1,1),new hrefList("slide0195.htm",1,-1,1),new hrefList("slide0181.htm",1,-1,1),new hrefList("slide0007.htm",1,-1,1),new hrefList("slide0266.htm",1,-1,1),new hrefList("slide0267.htm",1,-1,1),new hrefList("slide0231.htm",1,-1,1),new hrefList("slide0219.htm",1,-1,1),new hrefList("slide0221.htm",1,-1,1),new hrefList("slide0272.htm",1,-1,1),new hrefList("slide0232.htm",1,-1,1),new hrefList("slide0142.htm",1,-1,1),new hrefList("slide0145.htm",1,-1,1),new hrefList("slide0146.htm",1,-1,1),new hrefList("slide0147.htm",1,-1,1),new hrefList("slide0228.htm",1,-1,1),new hrefList("slide0148.htm",1,-1,1),new hrefList("slide0149.htm",1,-1,1),new hrefList("slide0150.htm",1,-1,1),new hrefList("slide0274.htm",1,-1,1),new hrefList("slide0276.htm",1,-1,1),new hrefList("slide0275.htm",1,-1,1),new hrefList("slide0253.htm",1,-1,1),new hrefList("slide0234.htm",1,-1,1),new hrefList("slide0237.htm",1,-1,1),new hrefList("slide0238.htm",1,-1,1),new hrefList("slide0239.htm",1,-1,1),new hrefList("slide0240.htm",1,-1,1),new hrefList("slide0277.htm",1,-1,1),new hrefList("slide0254.htm",1,-1,1),new hrefList("slide0086.htm",1,-1,1),new hrefList("slide0273.htm",1,-1,1),new hrefList("slide0085.htm",1,-1,1),new hrefList("slide0076.htm",1,-1,1),new hrefList("slide0213.htm",1,-1,1),new hrefList("slide0295.htm",1,-1,1),new hrefList("slide0204.htm",1,-1,1),new hrefList("slide0279.htm",1,-1,1),new hrefList("slide0209.htm",1,-1,1),new hrefList("slide0212.htm",1,-1,1),new hrefList("slide0280.htm",1,-1,1),new hrefList("slide0281.htm",1,-1,1),new hrefList("slide0283.htm",1,-1,1),new hrefList("slide0284.htm",1,-1,1),new hrefList("slide0285.htm",1,-1,1),new hrefList("slide0215.htm",1,-1,1),new hrefList("slide0286.htm",1,-1,1),new hrefList("slide0287.htm",1,-1,1),new hrefList("slide0255.htm",1,-1,1),new hrefList("slide0161.htm",1,-1,1),new hrefList("slide0242.htm",1,-1,1),new hrefList("slide0244.htm",1,-1,1),new hrefList("slide0243.htm",1,-1,1),new hrefList("slide0035.htm",1,-1,1),new hrefList("slide0245.htm",1,-1,1),new hrefList("slide0289.htm",1,-1,1),new hrefList("slide0288.htm",1,-1,1),new hrefList("slide0246.htm",1,-1,1),new hrefList("slide0249.htm",1,-1,1),new hrefList("slide0074.htm",1,-1,1),new hrefList("slide0096.htm",1,-1,1),new hrefList("slide0250.htm",1,-1,1),new hrefList("slide0290.htm",1,-1,1),new hrefList("slide0261.htm",1,-1,1),new hrefList("slide0189.htm",1,-1,1),new hrefList("slide0256.htm",1,-1,1),new hrefList("slide0126.htm",1,-1,1),new hrefList("slide0174.htm",1,-1,1),new hrefList("slide0006.htm",1,-1,1),new hrefList("slide0291.htm",1,-1,1),new hrefList("slide0173.htm",1,-1,1),new hrefList("slide0258.htm",1,-1,1));
  260. function FullScrInit()
  261. {
  262.     g_allowAdvOnClick = GetCurSld().mAdvOnClk
  263.     document.body.style.backgroundColor="black"
  264.     document.oncontextmenu=parent._CM;
  265.     document.onkeydown = _KDH;
  266.     document.ondragstart=Cancel
  267.     document.onselectstart=Cancel
  268.     self.focus()
  269. }
  270. function Redirect( frmId )
  271. {
  272.     var str=document.location.hash,idx=str.indexOf('#'), sId=GetSldId()
  273.     if(idx>=0) str=str.substr(1);
  274.     if( window.name != frmId && ( sId != str) ) {
  275.         obj = GetObj("Main-File")
  276.         window.location.href=obj.href+"#"+sId
  277.         return 1
  278.     }
  279.     return 0
  280. }
  281. var MHTMLPrefix = CalculateMHTMLPrefix();
  282. function CalculateMHTMLPrefix()
  283. {
  284.     if ( document.location.protocol == 'mhtml:') {
  285.         href=new String(document.location.href)
  286.         Start=href.indexOf('!')+1
  287.         End=href.lastIndexOf('/')+1
  288.         if (End < Start)
  289.             return href.substring(0, Start)
  290.         else
  291.         return href.substring(0, End)
  292.     }
  293.     return '';
  294. }
  295. function GetTags(base,tag)
  296. {
  297.     if(g_supportsPPTHTML) return base.all.tags(tag);
  298.     else return base.getElementsByTagName(tag);
  299. }
  300. function UpdNtsPane(){ if(frames["PPTNts"]) PPTNts.location.replace( MHTMLPrefix+GetHrefObj( gCurSld ).mNtsHref ) }
  301. function UpdNavPane( sldIndex ){ if(gNavLoaded) PPTNav.UpdNav() }
  302. function UpdOtNavPane(){ if(gOtlNavLoaded) PPTOtlNav.UpdOtlNav() }
  303. function UpdOtlPane(){ if(gOtlLoaded) PPTOtl.UpdOtl() }
  304. function SetHasNts( fVal )
  305. {
  306.     if( gHasNts != fVal ) {
  307.         gHasNts=fVal
  308.         UpdNavPane()
  309.     }
  310. }
  311. function ToggleOtlText()
  312. {
  313.     gOtlTxtExp=!gOtlTxtExp
  314.     UpdOtlPane()
  315. }
  316. function ToggleOtlPane()
  317. {
  318.     frmset=document.all("PPTHorizAdjust")
  319.     frm=document.all("PPTOtl")
  320.     if( gOtlOpen )
  321.         frmset.cols="*,100%"
  322.     else
  323.         frmset.cols="25%,*"
  324.     gOtlOpen=!gOtlOpen
  325.     frm.noResize=!frm.noResize
  326.     UpdOtNavPane()
  327. }
  328. function ToggleNtsPane()
  329. {
  330.     frmset=document.all("PPTVertAdjust")
  331.     frm=document.all("PPTNts")
  332.     if( gNtsOpen )
  333.         frmset.rows="100%,*"
  334.     else
  335.         frmset.rows="*,20%"
  336.     gNtsOpen=!gNtsOpen
  337.     UpdNtsPane()
  338. }
  339. function ClearMedia()
  340. {
  341.     if (PPTSld.pptSound) PPTSld.pptSound.loop = 0;
  342. }
  343. function FullScreen()
  344. {
  345.     if ( PPTSld.g_animUseRuntime )
  346.         PPTSld.document.body.pause();
  347.     ClearMedia();
  348.     var href = ( document.location.protocol == 'mhtml:') ? FULLSCR_HREF : FULLSCR_HREF+"#"+GetHrefObj(gCurSld).mSldHref;
  349.     if(PPTNav.event.ctrlKey) {
  350.         var w = (window.screen.availWidth * 1.0) / 2.0
  351.         var h = w * (PPTSld.g_origH * 1.0) / PPTSld.g_origW
  352.         win = window.open( MHTMLPrefix+href,null,"toolbar=0,resizable=1,top=0,left=0," + "width="+ w + ",height=" + h );
  353.         if( PPTSld.g_animUseRuntime )
  354.             win.document.body.PPTSldFrameset=window;
  355.     }
  356.     else
  357.     {
  358.         win = window.open( MHTMLPrefix+href,null,"fullscreen=yes" );
  359.         if( PPTSld.g_animUseRuntime )
  360.             win.document.body.PPTSldFrameset=window;
  361.     }
  362. }
  363. function ToggleVNarration()
  364. {
  365.     rObj=PPTSld.document.all("NSPlay")
  366.     if( rObj && !PPTSld.g_animUseRuntime ) {
  367.         if( (rObj.playState == 1)||(rObj.playState == 0) )
  368.             rObj.Play()
  369.         else if( rObj.playState == 2 )
  370.             rObj.Pause()
  371.         else
  372.             return;
  373.     }
  374.     else if( PPTSld.g_animUseRuntime )
  375.     {
  376.         narObj = PPTSld.document.all("narrationID")
  377.         if( narObj )
  378.             narObj.togglePause()
  379.     }
  380. }
  381. function GetCurSldNum()
  382. {
  383.     obj=GetHrefObj(gCurSld)
  384.     if( obj.mOrigVis == 1 )
  385.         return obj.mSldIdx
  386.     else
  387.         return gCurSld
  388. }
  389. function GetNumSlds()
  390. {
  391.     if( GetHrefObj(gCurSld).mOrigVis == 1 )
  392.         return GetSldList().mNumVisSlds;
  393.     else
  394.         return GetSldList().mList.length
  395. }
  396. function GetSldNum( href )
  397. {
  398.     for(ii=0; ii<GetSldList().mList.length; ii++) {
  399.         if ( GetSldList().mList[ii].mSldHref == href )
  400.             return ii+1
  401.     }
  402.     return 1
  403. }
  404. function GetHrefObj( sldIdx ){ return GetSldList().mList[sldIdx-1] }
  405. function IsFramesMode(){ return ( SCREEN_MODE == "Frames" ) }
  406. function IsFullScrMode(){ return ( SCREEN_MODE == "FullScreen" ) }
  407. function GoToNextSld()
  408. {
  409.     ii=gCurSld + 1
  410.     if( GetHrefObj( ii-1 ).mOrigVis == 0 ) {
  411.         if( ii<=GetSldList().mList.length ) {
  412.             obj=GetHrefObj(ii)
  413.             obj.mVis=1
  414.             GoToSldNum(ii)
  415.             return
  416.         }
  417.     }
  418.     else {
  419.         obj=GetHrefObj( ii )
  420.         while ( obj && ( obj.mOrigVis == 0 ) )
  421.             obj=GetHrefObj(++ii)
  422.         if( obj && obj.mOrigVis ) {
  423.             GoToSldNum(ii)
  424.             return
  425.         }
  426.     }
  427.     if( gSldStack.length > 1 )
  428.         PopSldList();
  429.     else if( !IsFramesMode() ) {
  430.                 if( gLoopCont )
  431.             GoToFirst()
  432.                 else
  433.             EndShow()
  434.     }
  435. }
  436. function GoToPrevSld()
  437. {
  438.     ii=gCurSld-1
  439.     if( ii > 0 ) {
  440.         obj=GetHrefObj(ii)
  441.         while ( obj && ( obj.mVis == 0 ) && ( ii>0 ) )
  442.             obj=GetHrefObj(--ii)
  443.         if( ii == 0 ) ii=1
  444.         GoToSldNum(ii)
  445.     }
  446. }
  447. function GoToFirst(){ GoToSld( GetHrefObj(1).mSldHref ) }
  448. function GoToLast()
  449. {
  450.     ii=GetSldList().mList.length
  451.     if( ii != gCurSld )
  452.         GoToSld( GetHrefObj(ii).mSldHref )
  453. }
  454. function GoToSldNum( num )
  455. {
  456.     if( PPTSld.event ) PPTSld.event.cancelBubble=true
  457.     obj = GetHrefObj( num )
  458.     obj.mVis=1
  459.     gPrevSld=gCurSld
  460.     gCurSld = num;
  461.     PPTSld.location.replace(MHTMLPrefix+obj.mSldHref)
  462.     if( IsFramesMode() ) {
  463.         UpdNavPane(); UpdOtlPane(); UpdNtsPane()
  464.     }
  465. }
  466. function GoToSld( href )
  467. {
  468.     if( PPTSld.event ) PPTSld.event.cancelBubble=true
  469.     GetHrefObj( GetSldNum(href) ).mVis=1
  470.     PPTSld.location.replace(MHTMLPrefix+href)
  471. }
  472. function SldUpdated( id )
  473. {
  474.     if( id == GetHrefObj(gCurSld).mSldHref ) return
  475.     gPrevSld=gCurSld
  476.     gCurSld=GetSldNum(id)
  477.     if( IsFramesMode() ) {
  478.         UpdNavPane(); UpdOtlPane(); UpdNtsPane()
  479.     }
  480. }
  481. function PrevSldViewed(){ GoToSld( GetHrefObj(gPrevSld).mSldHref ) }
  482. function HasPrevSld() { return ( gIsEndShow || ( gCurSld != 1 && GetHrefObj( gCurSld-1 ).mVis == 1 )||( GetCurSldNum() > 1 ) ) }
  483. function HasNextSld() { return (GetCurSldNum() != GetNumSlds()) }
  484. function CloseWindow() {
  485.     if( HideMenu() ) return;
  486.     var event = PPTSld.event;
  487.     if( !IsFramesMode() && event && (event.keyCode==27 || event.keyCode==32 || event.type=="click" ) )
  488.         window.close( self );
  489.     CatchNumKeys( self, event );
  490. }
  491. function Unload() { gIsEndShow=0; }
  492. function SetupEndShow() {
  493.     gIsEndShow=1;
  494.     PPTSld.document.body.scroll="no";
  495.     PPTSld.document.onkeypress=CloseWindow;
  496.     PPTSld.document.onclick=CloseWindow;
  497.     PPTSld.document.oncontextmenu=_CM;
  498. }
  499. function EndShow()
  500. {
  501.     if( IsFramesMode() ) return
  502.     if( PPTSld.event ) PPTSld.event.cancelBubble=true
  503.     doc=PPTSld.document
  504.     doc.open()
  505.     doc.writeln('<html><body bgcolor=black onload=parent.SetupEndShow() onunload=parent.Unload()><center><p><font face=Tahoma color=white size=2><br><b>' + ENDSHOW_MESG + '</b></font></p></center></body></html>')
  506.     doc.close()
  507. }
  508. function SetSldVisited(){ GetSldList().mList[gCurSld-1].mVisited=true }
  509. function IsSldVisited(){ return GetSldList().mList[gCurSld-1].mVisited }
  510. function hrefList( sldHref, visible, advDelay, advClk )
  511. {
  512.     this.mSldHref= this.mNtsHref = sldHref
  513.     this.mOrigVis= this.mVis = visible
  514.     this.mVisited= false
  515.     this.mAdvDelay= advDelay
  516.     this.mAdvOnClk= advClk
  517. }
  518. function SldList(arr,curSld,fEnd)
  519. {
  520.     this.mCurSld = curSld;
  521.     this.mList = new Array();
  522.     var idx = 1;
  523.     for(ii=0;ii<arr.length;ii++) {
  524.         this.mList[ii] = new hrefList( arr[ii].mSldHref, arr[ii].mOrigVis, arr[ii].mAdvDelay, arr[ii].mAdvOnClk );
  525.         if( arr[ii].mOrigVis )
  526.             this.mList[ii].mSldIdx = idx++;
  527.     }
  528.     this.mNumVisSlds = idx-1;
  529.     this.fEndShow = fEnd;
  530. }
  531. function GetSldList() {    return gSldStack[gSldStack.length-1] }
  532. function GetCurSld() { return parent.GetSldList().mList[parent.gCurSld - 1] }
  533. gSldStack = new Array();
  534. gSldStack[0] = new SldList(gMainDoc,gCurSld,1)
  535. function ViewCustomShow(idx,fEnd)
  536. {
  537.     if( !IsFullScrMode() ) return;
  538.     var sldList = new Array();
  539.     var custShow = custShowList[idx-1];
  540.     var jj = 0;
  541.     for( ii=0;ii<custShow.length;ii++ ) {
  542.         if( custShow[ii] <= gMainDoc.length )
  543.             sldList[jj++] = gMainDoc[custShow[ii]-1];
  544.     }
  545.     if (sldList.length > 0) {
  546.     PushSldList(sldList,fEnd);
  547.     gCurSld = 1;
  548.     }
  549.     else
  550.         if( PPTSld.event ) PPTSld.event.cancelBubble=true
  551. }
  552. function PushSldList(arr,fEnd) {
  553.     var ii = gSldStack.length;
  554.     gSldStack[ii] = new SldList(arr,gCurSld,fEnd);
  555.     GoToSld( gSldStack[ii].mList[0].mSldHref );
  556. }
  557. function PopSldList() {
  558.     if (gSldStack[gSldStack.length-1].fEndShow)
  559.         EndShow()
  560.     else {
  561.     gCurSld = gSldStack[gSldStack.length-1].mCurSld;
  562.     gSldStack[gSldStack.length-1] = null;
  563.     gSldStack.length--;
  564.     var sldList = gSldStack[gSldStack.length-1];
  565.     GoToSld( sldList.mList[gCurSld - 1].mSldHref );
  566.     }
  567. }
  568. var custShowList=new Array();
  569. function ImgBtn( oId,bId,w,action )
  570. {
  571.     var t=this
  572.     t.Perform    = _IBP
  573.     t.SetActive  = _IBSetA
  574.     t.SetInactive= _IBSetI
  575.     t.SetPressed = _IBSetP
  576.     t.SetDisabled= _IBSetD
  577.     t.Enabled    = _IBSetE
  578.     t.ChangeIcon = null
  579.     t.UserAction = action
  580.     t.ChgState   = _IBUI
  581.     t.mObjId   = oId
  582.     t.mBorderId= bId
  583.     t.mWidth   = w
  584.     t.mIsOn    = t.mCurState = 0
  585. }
  586. function _IBSetA()
  587. {
  588.     if( this.mIsOn ) {
  589.         obj=this.ChgState( gHiliteClr,gShadowClr,2 )
  590.         obj.style.posTop=0
  591.     }
  592. }
  593. function _IBSetI()
  594. {
  595.     if( this.mIsOn ) {
  596.         obj=this.ChgState( gFaceClr,gFaceClr,1 )
  597.         obj.style.posTop=0
  598.     }
  599. }
  600. function _IBSetP()
  601. {
  602.     if( this.mIsOn ) {
  603.         obj=this.ChgState( gShadowClr,gHiliteClr,2 )
  604.         obj.style.posLeft+=1; obj.style.posTop+=1
  605.     }
  606. }
  607. function _IBSetD()
  608. {
  609.     obj=this.ChgState( gFaceClr,gFaceClr,0 )
  610.     obj.style.posTop=0
  611. }
  612. function _IBSetE( state )
  613. {
  614.     var t=this
  615.     GetObj( t.mBorderId ).style.visibility="visible"
  616.     if( state != t.mIsOn ) {
  617.         t.mIsOn=state
  618.         if( state )
  619.             t.SetInactive()
  620.         else
  621.             t.SetDisabled()
  622.     }
  623. }
  624. function _IBP()
  625. {
  626.     var t=this
  627.     if( t.mIsOn ) {
  628.         if( t.UserAction != null )
  629.             t.UserAction()
  630.         if( t.ChangeIcon ) {
  631.             obj=GetObj(t.mObjId)
  632.             if( t.ChangeIcon() )
  633.                 obj.style.posLeft=obj.style.posLeft+(t.mCurState-4)*t.mWidth
  634.             else
  635.                 obj.style.posLeft=obj.style.posLeft+(t.mCurState-0)*t.mWidth
  636.         }
  637.         t.SetActive()
  638.     }
  639. }
  640. function _IBUI( clr1,clr2,nextState )
  641. {
  642.     var t=this
  643.     SetBorder( GetObj( t.mBorderId ),clr1,clr2 )
  644.     obj=GetObj( t.mObjId )
  645.     obj.style.posLeft=obj.style.posLeft+(t.mCurState-nextState)*t.mWidth-obj.style.posTop
  646.     t.mCurState=nextState
  647.     return obj
  648. }
  649. function TxtBtn( oId,oeId,action,chkState )
  650. {
  651.     var t=this
  652.     t.Perform    = _TBP
  653.     t.SetActive  = _TBSetA
  654.     t.SetInactive= _TBSetI
  655.     t.SetPressed = _TBSetP
  656.     t.SetDisabled= _TBSetD
  657.     t.SetEnabled = _TBSetE
  658.     t.GetState   = chkState
  659.     t.UserAction = action
  660.     t.ChgState   = _TBUI
  661.     t.mObjId      = oId
  662.     t.m_elementsId= oeId
  663.     t.mIsOn       = 1
  664. }
  665. function _TBSetA()
  666. {
  667.     var t=this
  668.     if( t.mIsOn && !t.GetState() )
  669.         t.ChgState( gHiliteClr,gShadowClr,0,0 )
  670. }
  671. function _TBSetI()
  672. {
  673.     var t=this
  674.     if( t.mIsOn && !t.GetState() )
  675.         t.ChgState( gFaceClr,gFaceClr,0,0 )
  676. }
  677. function _TBSetP()
  678. {
  679.     if( this.mIsOn )
  680.         this.ChgState( gShadowClr,gHiliteClr,1,1 )
  681. }
  682. function _TBSetD()
  683. {
  684.     this.ChgState( gFaceClr,gFaceClr,0,0 )
  685.     this.mIsOn = 0
  686. }
  687. function _TBSetE()
  688. {
  689.     var t=this
  690.     if( !t.GetState() )
  691.         t.ChgState( gFaceClr,gFaceClr,0,0 )
  692.     else
  693.         t.ChgState( gShadowClr,gHiliteClr,1,1 )
  694.     t.mIsOn = 1
  695. }
  696. function _TBP()
  697. {
  698.     var t=this
  699.     if( t.mIsOn ) {
  700.         if( t.UserAction != null )
  701.             t.UserAction()
  702.         if( !t.GetState )
  703.             return
  704.         if( t.GetState() )
  705.             t.SetPressed()
  706.         else
  707.             t.SetActive()
  708.     }
  709. }
  710. function _TBUI( clr1,clr2,lOffset,tOffset )
  711. {
  712.     SetBorder( GetObj( this.mObjId ),clr1,clr2 )
  713.     Offset( GetObj( this.m_elementsId ),lOffset,tOffset )
  714. }
  715. function Offset( obj, top, left ){ obj.style.top=top; obj.style.left=left }
  716. function SetBorder( obj, upperLeft, lowerRight )
  717. {
  718.     s=obj.style;
  719.     s.borderStyle      = "solid"
  720.     s.borderWidth      = 1
  721.     s.borderLeftColor  = s.borderTopColor = upperLeft
  722.     s.borderBottomColor= s.borderRightColor = lowerRight
  723. }
  724. function GetBtnObj(){ return gBtnArr[window.event.srcElement.id] }
  725. function BtnOnOver(){ b=GetBtnObj(); if( b != null ) b.SetActive() }
  726. function BtnOnDown(){ b=GetBtnObj(); if( b != null ) b.SetPressed() }
  727. function BtnOnOut(){ b=GetBtnObj(); if( b != null ) b.SetInactive() }
  728. function BtnOnUp()
  729. {
  730.     b=GetBtnObj()
  731.     if( b != null )
  732.         b.Perform()
  733.     else
  734.         Upd()
  735. }
  736. function GetNtsState(){ return parent.gNtsOpen }
  737. function GetOtlState(){ return parent.gOtlOpen }
  738. function GetOtlTxtState(){ return parent.gOtlTxtExp }
  739. function NtsBtnSetFlag( fVal )
  740. {
  741.     s=document.all.item( this.m_flagId ).style
  742.     s.display="none"
  743.     if( fVal )
  744.         s.display=""
  745.     else
  746.         s.display="none"
  747. }
  748. function _BSetA_Border(){ b = gBtnArr[this.mObjId]; if( b != null ) b.SetActive() }
  749. function _BSetI_Border(){ b = gBtnArr[this.mObjId]; if( b != null ) b.SetInactive() }
  750. var gHiliteClr="THREEDHIGHLIGHT",gShadowClr="THREEDSHADOW",gFaceClr="THREEDFACE"
  751. var gBtnArr = new Array()
  752. gBtnArr["nb_otl"] = new TxtBtn( "nb_otl","nb_otlElem",parent.ToggleOtlPane,GetOtlState )
  753. gBtnArr["nb_otlElem"] = new TxtBtn( "nb_otl","nb_otlElem",parent.ToggleOtlPane,GetOtlState )
  754. gBtnArr["nb_nts"] = new TxtBtn( "nb_nts","nb_ntsElem",parent.ToggleNtsPane,GetNtsState )
  755. gBtnArr["nb_prev"]= new ImgBtn( "nb_prev","nb_prevBorder",30,parent.GoToPrevSld )
  756. gBtnArr["nb_next"]= new ImgBtn( "nb_next","nb_nextBorder",30,parent.GoToNextSld )
  757. gBtnArr["nb_sldshw"]= new ImgBtn( "nb_sldshw","nb_sldshwBorder",18,parent.FullScreen )
  758. gBtnArr["nb_sldshwBorder"] = new TxtBtn( "nb_sldshw","nb_sldshwBorder",parent.FullScreen,null )
  759. gBtnArr["nb_sldshwBorder"].SetActive = _BSetA_Border;
  760. gBtnArr["nb_sldshwBorder"].SetInactive = _BSetI_Border;
  761. gBtnArr["nb_sldshwText"] = new TxtBtn( "nb_sldshw","nb_sldshwText",parent.FullScreen,null )
  762. gBtnArr["nb_sldshwText"].SetActive = _BSetA_Border;
  763. gBtnArr["nb_sldshwText"].SetInactive = _BSetI_Border;
  764. gBtnArr["nb_voice"]  = new ImgBtn( "nb_voice","nb_voiceBorder",18,parent.ToggleVNarration )
  765. gBtnArr["nb_otlTxt"]= new ImgBtn( "nb_otlTxt","nb_otlTxtBorder",23,parent.ToggleOtlText )
  766. gBtnArr["nb_nts"].m_flagId= "notes_flag"
  767. gBtnArr["nb_nts"].SetFlag = NtsBtnSetFlag
  768. gBtnArr["nb_otlTxt"].ChangeIcon= GetOtlTxtState
  769. var sNext="Next",sPrev="Previous",sEnd="End Show",sFont="Arial",sArrow="Arrow",sFreeform="Freeform",sRect="Rectangle",sOval="Oval"
  770. function ShowMenu()
  771. {
  772.     BuildMenu();
  773.     var doc=PPTSld.document.body,x=PPTSld.event.clientX+doc.scrollLeft,y=PPTSld.event.clientY+doc.scrollTop
  774.     m = PPTSld.document.all.item("ctxtmenu")
  775.     m.style.pixelLeft=x
  776.     if( (x+m.scrollWidth > doc.clientWidth)&&(x-m.scrollWidth > 0) )
  777.         m.style.pixelLeft=x-m.scrollWidth
  778.     m.style.pixelTop=y
  779.     if( (y+m.scrollHeight > doc.clientHeight)&&(y-m.scrollHeight > 0) )
  780.         m.style.pixelTop=y-m.scrollHeight
  781.     m.style.display=""
  782. }
  783. function _CM()
  784. {
  785.     if( !parent.IsFullScrMode() ) return;
  786.     if(!PPTSld.event.ctrlKey) {
  787.         ShowMenu()
  788.         return false
  789.     } else
  790.         HideMenu()
  791. }
  792. function BuildMenu()
  793. {
  794.     if( PPTSld.document.all.item("ctxtmenu") ) return
  795.     var mObj=CreateItem( PPTSld.document.body )
  796.     mObj.id="ctxtmenu"
  797.     mObj.style.visibility="hidden"
  798.     var s=mObj.style
  799.     s.position="absolute"
  800.     s.cursor="default"
  801.     s.width="120px"
  802.     SetCMBorder(mObj,"menu","black")
  803.     var iObj=CreateItem( mObj )
  804.     SetCMBorder( iObj, "threedhighlight","threedshadow" )
  805.     iObj.style.padding=2
  806.     CreateMenuItem( iObj,sNext,M_GoNextSld,M_True )
  807.     CreateMenuItem( iObj,sPrev,M_GoPrevSld,M_HasPrevSld )
  808.     CreateSeparator( iObj )
  809.     CreateMenuItem( iObj,sEnd,M_End,M_True )
  810.     mObj.style.visibility="visible"
  811. }
  812. function Cancel() { window.event.cancelBubble=true; window.event.returnValue=false }
  813. function Highlight() { ChangeClr("activecaption","threedhighlight") }
  814. function Deselect() { ChangeClr("threedface","menutext") }
  815. function Perform()
  816. {
  817.     e=PPTSld.event.srcElement
  818.     if( e.type=="menuitem" && e.IsActive() )
  819.         e.Action()
  820.     else
  821.         PPTSld.event.cancelBubble=true
  822. }
  823. function ChangeClr( bg,clr )
  824. {
  825.     e=PPTSld.event.srcElement
  826.     if( e.type=="menuitem" && e.IsActive() ) {
  827.         e.style.backgroundColor=bg
  828.         e.style.color=clr
  829.     }
  830. }
  831. function M_HasPrevSld() { return( parent.HasPrevSld() ) }
  832. function M_GoNextSld() { if( gIsEndShow ) M_End(); else GoToNextSld() }
  833. function M_GoPrevSld() { if( gIsEndShow ) { history.back(); PPTSld.event.cancelBubble=true; } else GoToPrevSld() }
  834. function M_True() { return true }
  835. function M_End() { window.close( self ) }
  836. function CreateMenuItem( node,text,action,eval )
  837. {
  838.     var e=CreateItem( node )
  839.     e.type="menuitem"
  840.     e.Action=action
  841.     e.IsActive=eval
  842.     e.innerHTML=text
  843.     if( !e.IsActive() )
  844.         e.style.color="threedshadow"
  845.     e.onclick=Perform
  846.     e.onmouseover=Highlight
  847.     e.onmouseout=Deselect
  848.     s=e.style;
  849.     s.fontFamily=sFont
  850.     s.fontSize="9pt"
  851.     s.paddingLeft=2
  852. }
  853. function CreateSeparator( node )
  854. {
  855.     var sObj=CreateItem( node )
  856.     SetCMBorder(sObj,"menu","menu")
  857.     var s=sObj.style
  858.     s.borderTopColor="threedshadow"
  859.     s.borderBottomColor="threedhighlight"
  860.     s.height=1
  861.     s.fontSize="0px"
  862. }
  863. function CreateItem( node )
  864. {
  865.     var elem=PPTSld.document.createElement("DIV")
  866.     node.insertBefore( elem )
  867.     return elem
  868. }
  869. function SetCMBorder( o,ltClr,rbClr )
  870. {
  871.     var s=o.style
  872.     s.backgroundColor="menu"
  873.     s.borderStyle="solid"
  874.     s.borderWidth=1
  875.     s.borderColor=ltClr+" "+rbClr+" "+rbClr+" "+ltClr
  876. }
  877.